#ifndef RYTHM_H
#define RYTHM_H

#include "utils.h"

class Rythm
{
public :

	// =================================================================
	// Friend
		
	// Operateur <<
	friend ostream& 	operator<< 		(std::ostream& out, const Rythm* lvl) ;

	// =================================================================
	// enum 

	// Type des obstacle (haut bas gauche droite)
	enum Type {Top, Bot, Left, Right} ;

	// ==========================================================================================
	// Public functions :

				Rythm		(const int _Begin, const int _End = -1, const double _Bf = -1, const double _Hf = -1) ;

				~Rythm		() ;

	void		SetBf		(const double _Bf)					{ m_Bf = _Bf ; }
	double		GetBf		() const							{ return m_Bf ; }

	void		SetHf		(const double _Hf)					{ m_Hf = _Hf ; }
	double		GetHf		() const							{ return m_Hf ; }

	void		SetBegin	(const int _Begin)					{ m_Begin = _Begin ; }
	int			GetBegin	() const							{ return m_Begin ; }

	void		SetEnd		(const int _End)					{ m_End = _End ; }
	int			GetEnd		() const							{ return m_End ; }

	void		SetType		(Type _Type)						{m_Type = _Type ; }
	Type		GetType		()									{return m_Type ; }

	void		Fusion		(const Rythm& _R) ; 

	// ==========================================================================================

private :

	// ==========================================================================================
	// Private attributs :
	
	// Tt les temps sont en milliseconde
	int			m_Begin ;
	int			m_End ;
	
	// Frequence en Hz
	double		m_Bf ;
	double		m_Hf ;

	Type		m_Type ;
} ;

#endif RYTHM_H